package cn.hacynn.nd.service;

import cn.hacynn.nd.pojo.dto.CodeVerifyDTO;
import cn.hacynn.nd.pojo.dto.TransferFileDTO;
import cn.hacynn.nd.pojo.entity.Share;
import cn.hacynn.nd.pojo.vo.DownloadListVO;
import jakarta.servlet.http.HttpServletRequest;

import java.util.List;

/**
 * @Author Hacynn
 * @Date 2024/5/28 22:35
 * @Version 1.0
 */
public interface ShareService {

    /**
     * 获取分享列表
     * @return
     */
    List<Share> list(HttpServletRequest request);

    /**
     * 获取分享链接信息
     * @param shortLink
     * @return
     */
    Share getShareDetail(String shortLink);

    /**
     * 检查分享文件是否已被删除
     * @param shareId
     * @return
     */
    void exist(String shareId);

    /**
     * 设置分享文件提取码
     * @param shareId
     */
    String encode(String shareId);

    /**
     * 校验提取码
     * @param codeVerifyDTO
     * @return
     */
    Boolean verifyCode(CodeVerifyDTO codeVerifyDTO);

    /**
     * 记录分享文件的下载次数
     * @param shareId
     */
    void downloadCount(String shareId);

    /**
     * 分享的文件夹下载（打包下载文件），不需要登录
     * @param shareId
     * @param dirPath
     * @return
     */
    List<DownloadListVO> downloadDir(String shareId, String dirPath);

    /**
     * 取消分享
     * @param shareId
     */
    void delete(String shareId);

    /**
     * 生成分享二维码
     * @param shareUrl
     * @return
     */
    String generatorQR(String shareUrl);

    /**
     * 转存文件
     * @param transferFileDTO
     */
    void transfer(TransferFileDTO transferFileDTO, HttpServletRequest request);
}
